*********************************
*********************************
*
*  OBJECT DRAWING SUBROUTINES   *
*
**********************************
*********************************
REG EQU $8CE ;REGION 
LEV EQU $8CA ;LEVEL IN ROOM 
RNUM EQU $8C9
ROW EQU $8CC
COL EQU $8CD
XTEMP EQU $8C3
YTEMP EQU $8C4
TREADNUM EQU $8C6
ACT2 EQU $9DD 
DRX EQU $9D5
BX EQU $9D6
XR EQU $9D8 
SKNUM EQU $9D9
PRINT EQU $A4F     
COUNTER EQU $8C5
ADDR EQU $A25
TEMAC EQU $EB
AHI EQU $800  
ALO EQU AHI+$100 
COUNT EQU $ED
DOOR EQU $EC ;SAME AS WIDTH IN BLOCK.PLOT
CHNUM EQU $FD
MASK1 EQU AHI+$C7
FLAG EQU AHI+$C8 
TEST EQU AHI+$CB 
TEMP2 EQU $8CF   
OPMODE0 EQU $E90
XNEW EQU $EF0
XOLD EQU $EE0
H2O EQU $8EF
WTLEV EQU $8DB
TONE EQU $303
SHORTNOISE EQU $5215
*
*
******************************
 ORG $5A00 
*
**********************************
*
*
FIGXR JMP FIGXR1
SKDR1 JMP SKDR2
DRBXOP JMP DRBXOP1
DRBXCL JMP DRBXCL1
UPSTR JMP UPSTR1
BOTSTR JMP BOTSTR1
PRINTA JMP PRINTA1
PRINTB JMP PRINTB1
RTDOP JMP RTDOP1
LFDOP JMP LFDOP1
LEFTWALL JMP LEFTWALL1
STAIRWELL JMP STAIRWELL1
DRTSTR JMP DRTSTR1
DLSTR JMP DLSTR1
DRSK JMP DRSK0
NOFLOOR JMP NOFLOOR1
WEAKFLOOR JMP WEAKFLOOR1
RTSTR JMP RTSTR1
LFSTR JMP LFSTR1
OBSTRA JMP OBSTR1
OBSTRB JMP OBSTR2
SPECIAL1 DFB $EA,$EA,$60 
DRAWBLUELINE JMP DRAWBLUELINE1
ERASELINE JMP ERASELINE1
DRAWLINE JMP DRAWLINE1
DRAWFLOOR JMP DRAWFLOOR1
BLOCK JMP BLOCK1
FAUCET JMP FAUCET1
STREAM JMP STREAM1
*
*
FIGXR1 LDA #0
 STA XR
 LDX #5
ADIT CLC
 LDA REG
 ADC XR
 STA XR
 DEX    
 BNE ADIT
 RTS
*
* FIGURES THE X VALUE CORRESPONDING TO THE REGION NUMBER REG
*
*******************************
*
*  BOX DRAWER
*
*****************************
*
DRBXOP1 LDA #$4F 
 STA BX
 BNE DRBX
DRBXCL1 LDA #$4E 
 STA BX
DRBX LDX LEV
 LDA BY,X
 TAY
 LDX XR
 INX
 LDA BX
 JSR PRINTA1 
 RTS
*
*******************************
*
*
*******************************
*
* SKULL DRAWER
*
*******************************
*
DRSK0 CLC 
 LDA ROW
 ADC REG
 AND #3
 CLC
 ADC SKBAS
 STA SKNUM
SKDR2 LDX LEV 
 LDY SKY,X
 LDA SKNUM
 LDX XR
 JSR PRINTA1 
 RTS
*
***************************
*
* INTERIOR STAIR DRAWER
*
*************************
*
***** USE ONLY ON LEVELS 1 AND 2 *****
* 
DRTSTR1 LDA #$80 
 STA ACT2 
 BNE DSTR
DLSTR1 LDA #0
 STA ACT2 
DSTR LDX LEV ;THIS SHOULD BE 1 OR 2
 LDA STRY,X
 STA YTEMP
 LDA #7
 STA TREADNUM
 LDA XR
 STA XTEMP
 BIT ACT2 
 BMI RIGHTS 
LEFTS JMP LFSTR1 
RIGHTS JMP RTSTR1 
*
*****************************
*
* EXIT STAIRS DRAWER
*
*****************************
*
UPSTR1 LDA #20
 STA XTEMP
 LDA #0
 STA YTEMP
 LDA #6
 STA TREADNUM
 JMP RTSTR1 
*
BOTSTR1 LDA #20
 STA XTEMP
 LDA #160
 STA YTEMP
 LDA #4
 STA TREADNUM
 JMP RTSTR1
*
*******************************
*
***************************
*
*     DOORS               *
*
***************************
RTDOP1 LDA #39
 STA DRX
CL LDA #0 
FXD STA DOOR
 LDX LEV
 LDY DORY,X
 LDX DRX
 JMP DOORDRAW
*
LFDOP1 LDA #0
 STA DRX
 BEQ CL   
*
****************************
*
* WEAK FLOOR MAKER
*
*************************
*
WEAKFLOOR1 LDX LEV 
 LDY WFLY,X
 LDX XR
 LDA #$7D                
 JSR PRINTB1
 RTS
*
****************************
*
* PRINT OVER ANYTHING
*
********************************
*
PRINTB1 STA TEMAC
 LDA #$9D
 STA ADDR
 JSR PRINT
 LDA #$5D
 STA ADDR
 RTS
*
*************************
*
*************************
*
* EOR PRINT
*
*************************
*
PRINTA1 STA TEMAC
 JSR PRINT
 RTS
*
************************
*
********************************
*
* OUTLINE ROOM AND FLOORS      *
*
********************************
*
LEFTWALL1 LDA #$15 ;2A PURPLE 7A WHITE 
 STA CHNUM
 LDX #0
 JSR VERT
RIGHTWALL LDA #$2A ;15 GREEN 7A WHITE 
 STA CHNUM
 LDX #39
 JSR VERT
CEILING LDY #0
 JSR DRAWLINE1
 INY
 JSR DRAWLINE1
TOPFLOOR LDY #48
 JSR DRAWFLOOR1
MIDFLOOR LDY #104
 JSR DRAWFLOOR1 
LOWERFLOOR LDY #160 
 JSR DRAWFLOOR1 
 RTS
**************************
*
DRAWFLOOR1 JSR DRAWLINE1
 INY
 JSR DRAWLINE1
 INY
 JSR DRAWLINE1
 RTS
***************************
*
DRAWLINE1 LDX #38 
 LDA AHI,Y
 STA POKER+2
 STA POKER1+2
 LDA ALO,Y
 STA POKER+1
 STA POKER1+1
COLOR1 LDA #$55     
POKER STA $2000,X
 DEX
 DEX
 BPL POKER
 LDX #39
COLOR2 LDA #$2A     
POKER1 STA $2000,X
 DEX
 DEX
 BPL POKER1
 RTS
***************************
VERT LDY #190
LOOP1 LDA ALO,Y
 STA POKE2+1
 LDA AHI,Y
 STA POKE2+2
 LDA CHNUM
POKE2 STA $2000,X
 DEY
 BNE LOOP1
 RTS
***************************
*
* DOOR DRAWING ROUTINES   *
*                         *
***************************
*
*
DOORDRAW LDA #45
HALF STA COUNT 
LOOP2 LDA ALO,Y
 STA POKE3+1
 LDA AHI,Y
 STA POKE3+2
 LDA DOOR
POKE3 STA $2000,X
 DEY
 DEC COUNT
 BNE LOOP2
 RTS
*
*****************************
*  DRAW OPENING IN FLOOR    *
*****************************
*
STAIRWELL1 LDX XTEMP
 LDY YTEMP
 LDA #5
ALTSTWL STA COUNTER 
LOOP3 LDA #125 
 JSR PRINTB1 
 NOP ;THE PRINT ROUTINE WILL INX 
 LDY YTEMP
 DEC COUNTER
 BNE LOOP3
 RTS
*
******************************
*
* DRAW RIGHT FACING STAIR    *
*
******************************
*
RTSTR1 LDX XTEMP
 LDY YTEMP
 JSR STAIRWELL1
 LDA TREADNUM
 STA COUNTER
 LDX XTEMP
LOOP4 LDA #126 
 LDY YTEMP
 JSR PRINTB1 
 NOP ;THE PRINT SHOULD INX 
 LDA YTEMP
 CLC
 ADC #8
 STA YTEMP
 DEC COUNTER
 BNE LOOP4
 RTS
*
******************************
*
* DRAW LEFT FACING STAIRS    *
*
******************************
*
LFSTR1 LDX XTEMP
 LDY YTEMP
 JSR STAIRWELL1
 LDA TREADNUM
 STA COUNTER
LOOP5 LDA #127 
 LDY YTEMP
 JSR PRINTB1 
 DEX
 DEX ;NEED ONE MORE DUE TO PRINTB1
 CLC
 LDA YTEMP
 ADC #8
 STA YTEMP
 DEC COUNTER
 BNE LOOP5
 RTS
*
****************************
*
*  NO FLOOR-OPENING IN FLOOR
NOFLOOR1 LDX LEV ; 1 OR 2
 BNE PROPLEV
 RTS ;LEV = 0 DONT DRAW
PROPLEV LDA STRY,X 
 STA YTEMP
 LDA XR
 STA XTEMP
 LDA REG
 BEQ SHORT1
 CMP #7
 BEQ SHORT2
 JMP STAIRWELL1
SHORT1 INC XTEMP
 NOP
 NOP
 NOP
SHORT2 LDX XTEMP
 LDY YTEMP
DDD LDA #4    
 JMP ALTSTWL
*
*******************************
*
*
************************
*
* OBSTRUCTION DRAWERS
*
************************
*
OBSTR1 LDA XR
 LSR A
 BCS VIOLET
 LDA #$4D ;GREEN
 BNE STOR
VIOLET LDA #$4C 
STOR STA TEMAC
 LDX LEV
 LDY MUY,X 
ENT2 LDX XR 
 JSR PRINTB1
 RTS
*
*
OBSTR2 LDA #5
 STA XTEMP 
LUPO JSR OBSTR1 
 INC XR
 DEC XTEMP
 BNE LUPO 
 RTS
*
*
******************************
*
* 
DONOTHING RTS
*
*
***************************
*
*
DRAWBLUELINE1 LDA #$D5
 STA COLOR1+1
 LDA #$AA
 STA COLOR2+1
DRLINT JSR DRAWLINE1 
 LDA #$55
 STA COLOR1+1 
 LDA #$2A
 STA COLOR2+1
 RTS
*
*
ERASELINE1 LDA #0
 STA COLOR1+1
 STA COLOR2+1
 JMP DRLINT
*
*
BLOCK1 JSR OBSTR1
 LDA #$20
 JSR SHORTNOISE
 LDA #$50
 JSR SHORTNOISE ;EXPERIMENT
 LDX LEV
 LDA MUY,X
 CLC
 ADC #$18 ;EXPERIMENT
 TAY
 LDA TEMAC 
 JMP ENT2
*
*
FAUCET1 LDA #$5D
 LDX #$24 ;EXPERIMENT
 LDY #$80 ;EXPERIMENT
 JSR PRINTA
 RTS
*
*
STREAM1 LDA #$5E
 LDX #$24 ;EXPERIMENT
 LDY #$90 ;EXPERIMENT
 JSR PRINTA
 LDA #$10
 JSR SHORTNOISE ;EXPERIMENT
 RTS
*
*
*
*
 ORG $94C0
*
***************************
*
*    TABLES
*
*****************************
*
*
*
BY DFB $18,$50,$88
STRY DFB 0,$30,$68,$A0
WFLY DFB $32,$6A,$A2
MUY DFB $2,$33,$6B
DORY DFB $2F,$67,$9F
STY DFB 8,$40,120
SKY DFB $20,$58,$90
*
*****************************
*
SKBAS DFB $51
*
RTDRMSK DFB 1,2,4
LFDRMSK DFB $20,$10,8 
 DFB 0,0,0
ROOMTAB DFB 65,65,65,65,65,65,65,65,0,0,0,0,0,0,0,0
SPEC DW $6400
 DW $6400
 DW $6400
 DW $6400
 DW $6400
 DW $6400
 DW $6400
 DW $6400
*
***************************
